/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controleur;

import application.Facade;
import application.Membre;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author James
 */
public class CommandeCreerCompte implements Commande {

    private String next;
    private String pageSuivante;

    public CommandeCreerCompte(String next) {
        this.next = next.toLowerCase();
    }

    @Override
    public String executer(HttpServletRequest req, HttpServletResponse res) throws CommandeException {
        Facade f = new Facade();
        Membre m = new Membre();
        pageSuivante = next;
        String nomUtilisateur = req.getParameter("username");
        String imageProfil = req.getParameter("image_profil");
        String typeCompte = req.getParameter("compte");
        String idTypeCompte;
        int rowCount = 0;
        FileInputStream fin = null;
        boolean imageCreer = false;

        if (nomUtilisateur != null && typeCompte != null) {
            if (f.verifierNomUtilisateurExiste(nomUtilisateur)) {
                redirigerPageErreur(req, "Ce nom d'utilisateur existe déjà.");
            } else {
                try {
                    fin = f.creerFichier(imageProfil);
                    imageCreer = true;
                } catch (FileNotFoundException e) {
                    redirigerPageErreur(req, "L'image n'existe pas.");
                }

                if (imageCreer) {
                    idTypeCompte = f.getTypeId(typeCompte);
                    rowCount = f.creerCompte(req, idTypeCompte);

                    if (rowCount == 0) {
                        redirigerPageErreur(req, "Erreur de base de données.");
                    } else {

                        String idMembre = f.getMembreUtilisateur(nomUtilisateur).getIdMembre();
                        
                        rowCount = f.creerImageMembre(fin, idMembre);

                        if (rowCount == 0) {
                            redirigerPageErreur(req, "L'image n'a pas été créée.");
                        } else {
                            rowCount = f.associerImageMembre(idMembre);
                            
                            if (rowCount == 0) {
                                redirigerPageErreur(req, "Erreur de base de données.");
                            }
                        }
                    }
                }
            }




//                rowCount = f.insererImageDefault();
//
//                if (rowCount == 0) {
//                    redirigerPageErreur(req, "Erreur de base de données.");
//                } else {
//                    idTypeCompte = f.getTypeId(typeCompte);
//                    rowCount = f.creerCompte(req, idTypeCompte);
//                }
//
//                if (rowCount == 0) {
//                    redirigerPageErreur(req, "Erreur de base de données.");
//                }
//            }

        } else {
            redirigerPageErreur(req, "Votre compte n'a pas été créé.");
        }
        return pageSuivante;
    }

    private void redirigerPageErreur(final HttpServletRequest req, final String message) {
        req.setAttribute(ConstantesWeb.ATTRIBUT_ERREUR, message);
        pageSuivante = ConstantesWeb.PAGE_ERREUR;
    }
}
